package Day_0201.JUC;

/**
 * @author zxc
 * @date 2023/02/01 18:31
 **/
public class Thread_communication {
    public static void main(String[] args) {
        /**
         * 线程之间如何进行通信
         * ===》
         * 线程之间的通信有两种方式：共享内存和消息传递。
         *
         * 1.共享内存
         * （1）在共享内存的并发模型里，线程之间共享程序的公共状态，线程之间通过写-读内存中的公共状态来隐式进行通信。
         * （2）典型的共享内存通信方式，就是通过共享对象进行通信。
         *  ===> 即，多个线程通过共享资源，进行相互之间的通信;
         *
         * 案例 ：
         * 例如上图线程 A 与 线程 B 之间如果要通信的话，那么就必须经历下面两个步骤：
         * 1. 线程 A 把本地内存 A 更新过得共享变量刷新到主内存中去。
         * 2. 线程 B 到主内存中去读取线程 A 之前更新过的共享变量。
         * ===》 即，volatile关键字所能够实现的，可见性;
         *
         * 2.消息传递
         * （1）在消息传递的并发模型里，线程之间没有公共状态，线程之间必须通过明确的发送消息来显式进行通信。
         * （2）在 Java 中典型的消息传递方式，就是 wait() 和 notify() ，或者 BlockingQueue 。
         * ===> 即，多个线程通过消息队列，来实现通信;
         *
         */
    }
}
